草庐IT

JavaBeans 替代品?

全部标签

c++ - IsBadReadPtr 的最有效替代品?

我有一些VisualC++代码接收指向缓冲区的指针,该缓冲区包含需要由我的代码处理的数据以及该缓冲区的长度。由于我无法控制的错误,有时此指针未初始化或不适合读取我的代码(即,当我尝试访问缓冲区中的数据时它会导致崩溃。)所以,我需要在使用它之前验证这个指针。我不想使用IsBadReadPtr或IsBadWritePtr,因为每个人都同意它们是错误的。(谷歌他们的例子。)它们也不是线程安全的——在这种情况下这可能不是问题,尽管线程安全的解决方案会很好。我在网上看到了通过使用VirtualQuery或仅在异常处理程序中执行memcpy来完成此任务的建议。但是,需要执行此检查的代码是时间敏感的

java - Java 字符串实习的替代方案

由于Java的默认字符串实习受到了很多负面报道,我正在寻找替代方案。你能推荐一个API来替代Java字符串实习吗?我的应用程序使用Java6。我的要求主要是通过实习避免重复字符串。关于负面新闻:字符串实习生是通过native方法实现的。并且C实现使用一些1k条目的固定大小,并且对于大量字符串的扩展性非常差。Java6将实习字符串存储在Permgen中。因此不是GC'd并可能导致permgen错误。我知道这在java7中已修复,但我无法升级到java7。为什么我需要使用intering?我的应用是一个服务器应用,堆大小为10-20G,用于不同的部署。在分析过程中,我们发现数十万个字符串是

java - Java 字符串实习的替代方案

由于Java的默认字符串实习受到了很多负面报道,我正在寻找替代方案。你能推荐一个API来替代Java字符串实习吗?我的应用程序使用Java6。我的要求主要是通过实习避免重复字符串。关于负面新闻:字符串实习生是通过native方法实现的。并且C实现使用一些1k条目的固定大小,并且对于大量字符串的扩展性非常差。Java6将实习字符串存储在Permgen中。因此不是GC'd并可能导致permgen错误。我知道这在java7中已修复,但我无法升级到java7。为什么我需要使用intering?我的应用是一个服务器应用,堆大小为10-20G,用于不同的部署。在分析过程中,我们发现数十万个字符串是

visual-c++ - uintptr_t 可移植替代品

我想检查一些类型T的内存对齐。直接的方法是if(((uintptr_t)&var&__alignof(T)-1)==0)...但是,uintptr_t不是现有C++标准的一部分,并且某些编译器不支持它,因此我正在寻找一种可移植的替代方法来执行此操作和std::ptrdiff_t对我来说看起来不错。std::ptrdiff_t保证能够存储两个指针之间的差异,但谁说其中一个指针不能是空指针?在这种情况下,std::ptrdiff_t必须至少与指针本身的大小相同。templateboolis_properly_aligned(constT*constptr){std::ptrdiff_tdi

visual-c++ - uintptr_t 可移植替代品

我想检查一些类型T的内存对齐。直接的方法是if(((uintptr_t)&var&__alignof(T)-1)==0)...但是,uintptr_t不是现有C++标准的一部分,并且某些编译器不支持它,因此我正在寻找一种可移植的替代方法来执行此操作和std::ptrdiff_t对我来说看起来不错。std::ptrdiff_t保证能够存储两个指针之间的差异,但谁说其中一个指针不能是空指针?在这种情况下,std::ptrdiff_t必须至少与指针本身的大小相同。templateboolis_properly_aligned(constT*constptr){std::ptrdiff_tdi

c++ - 使用 constexpr 函数替代 reinterpret_cast

下面,你会发现一个用于CRC32计算的constexpr字符串文字。我不得不重新解释char中的字符串文字字符。至unsignedchar.因为reinterpret_cast在constexpr函数中不可用,解决方法是手动补码的一个小实用函数,但我对它有点失望。是否存在更优雅的解决方案来处理这种操作?#includeclassCrc32Gen{uint32_tm_[256]{};staticconstexprunsignedcharreinterpret_cast_schar_to_uchar(charv){returnv>=0?v:~(v-1);}public://algorith

c++ - 使用 constexpr 函数替代 reinterpret_cast

下面,你会发现一个用于CRC32计算的constexpr字符串文字。我不得不重新解释char中的字符串文字字符。至unsignedchar.因为reinterpret_cast在constexpr函数中不可用,解决方法是手动补码的一个小实用函数,但我对它有点失望。是否存在更优雅的解决方案来处理这种操作?#includeclassCrc32Gen{uint32_tm_[256]{};staticconstexprunsignedcharreinterpret_cast_schar_to_uchar(charv){returnv>=0?v:~(v-1);}public://algorith

c++ - 公开集合的有效替代方案

在C++中,从性能和数据完整性的角度来看,我有哪些方法可以公开集合?我的问题是我想将内部数据列表返回给调用者,但我不想生成拷贝。Thant让我要么返回对列表的引用,要么返回指向列表的指针。但是,我并不热衷于让调用者更改数据,我只是想让它读取数据。我必须在性能和数据完整性之间做出选择吗?如果是这样,一般来说是采用一种方式更好,还是针对具体情况?还有其他选择吗? 最佳答案 很多时候调用者想要访问只是为了遍历集合。从Ruby的书中拿出一页,让迭代成为您类(class)的私有(private)方面。#include#includeclass

c++ - 公开集合的有效替代方案

在C++中,从性能和数据完整性的角度来看,我有哪些方法可以公开集合?我的问题是我想将内部数据列表返回给调用者,但我不想生成拷贝。Thant让我要么返回对列表的引用,要么返回指向列表的指针。但是,我并不热衷于让调用者更改数据,我只是想让它读取数据。我必须在性能和数据完整性之间做出选择吗?如果是这样,一般来说是采用一种方式更好,还是针对具体情况?还有其他选择吗? 最佳答案 很多时候调用者想要访问只是为了遍历集合。从Ruby的书中拿出一页,让迭代成为您类(class)的私有(private)方面。#include#includeclass

c++ - "enum class"MSVC 10.0 的仿真或可靠替代方案

我正在为以下问题寻找一种hacky的解决方案:GCC4.4+接受以下c++0x代码:enumclassmy_enum{value1,value2};允许这样使用:my_enume=my_enum::value1;这带来了所有的花里胡哨。我想让这段代码与MSVC2010兼容,大意是使用语法不会改变。我之前已经思考过here,并且接受的答案有效,但是需要枚举和枚举值的两个不同名称正在破坏这两种方法的兼容性。这使得按原样替换C++0x代码当然无法使用。我想知道是否有一些#undef和#define诡计可以解决这个问题,让我使用enumclass-像语法(可能没有严格的类型安全等),但至少是相